package com.lazily.bignum;


import java.math.BigDecimal;

public class BigDecimal_ {
	// 程序入口
	public static void main(String[] args) {
		// 当我们需要保存一个精度很高的数时, double 不能满足
		// 可以是 BigDecimal
		double d = 1999.111111199999999999999999999999999999999999991111111111d;
		System.out.println(d);

		BigDecimal bigDecimal = new BigDecimal("1999.111111199999999999999999999999999991111111111");
		BigDecimal bigDecimal1 = new BigDecimal("1.1");
		System.out.println(bigDecimal);
		// 解读：
		// 1. 如果对 BigDecimal 进行运算, 比如加减乘除, 需要使用对应的方法
		// 2. 创建一个需要操作的 BigDecimal 然后调用相应的方法即可
		System.out.println(bigDecimal.add(bigDecimal1)); // 加
		System.out.println(bigDecimal.subtract(bigDecimal1)); // 减
		System.out.println(bigDecimal.multiply(bigDecimal1)); // 乘
		// System.out.println(bigDecimal.divide(bigDecimal1)); // 除 // 可能抛出异常ArithmeticException
		// 解决方法, 在调用divide 方法时, 指定精度即可, BigDecimal.ROUND_CEILING
		// 如果有无限循环小数, 就会保留 分子 的精度
		System.out.println(bigDecimal.divide(bigDecimal1, BigDecimal.ROUND_CEILING));
	}
}
